<?php #coding: utf-8 æ ø å

class Element extends CI_Model {
	public $beskrivelser = array(); //tekst, overskrift, forfatter (ingame + offgame), created (ingame + offgame), feature
	public $navne = array();
	public $stamdata = array();
	public $id_type_match;
	public $under = array();
	public $under_ider = array();
	public $over = array();
	public $alle_under = array();
	public $alle_over = array();
	public $alle_over_ider = array();
	public $oeverst = array();
	public $oeverst_ider = array();
	public $maa_jeg_se;
	public $er_jeg_admin;
	public $forfatter;
	public $gm;
	public $synlig_for = array();
	public $synlig_for_ider = array();
	public $alle_af_type = array();
	public $alle_af_type_ider = array();
	public $relation;
	public $type_array = array();

	function knyt_til_kampagne($element_id, $kampagne_id){
		$query = $this->db->query
		('
			SELECT id_element
			FROM element_kampagne
			WHERE id_element = '.$element_id.'
			AND id_kampagne = '.$kampagne_id.'
		');
		if($query->num_rows() == 0)  //altså hvis administratoreren ikke allerede eksisterer
		{
			
			$data = array
			(
		   		'id_element' => $element_id,
		   		'id_kampagne' => $kampagne_id
			);
			$this->db->insert("element_kampagne", $data);
		}
	}

	public function fjern_fra_kampagne($element_id, $kampagne_id)
	{
		$query = $this->db->query
		('
			DELETE FROM element_kampagne
			WHERE id_element = '.$element_id.'
			AND id_kampagne = '.$kampagne_id.'
		');	
	}

	function find_admins($id_element)
	{
		$query = $this->db->query
		('
			SELECT deltager.id, deltager.username, deltager.rollespiller_navn, deltager.rollespiller_efternavn
			FROM deltager, admin_element
			WHERE deltager.id = admin_element.id_deltager
			AND admin_element.id_element = '.$id_element.'
			ORDER BY deltager.rollespiller_navn ASC

		');	
		$admins = array();

		
		foreach ($query->result() as $row)
		{ 
		   	$admins[] = array
			(
				'id' => $row->id,
				'username' => $row->username,
				'navn' => $row->rollespiller_navn,
				'efternavn' => $row->rollespiller_efternavn
			);
		}
		
		return $admins;
	}


	function find_typer($type,$type_spec) {
		
		
		if($type == "entitet"){
			if($type_spec == "player_character") {
				$this->type_array = array("entitet","individ","player_character");
			}
			elseif($type_spec == "individ") {
				$this->type_array = array("entitet","individ");
			}
			else {
				if($type_spec == "race") {
					$this->type_array = array("entitet","gruppe","race");
				}
				else {
					$this->type_array = array("entitet","gruppe");
				}
			}
		}
		elseif($type == "begivenhed") {
			if($type_spec == "kampagne") {
				$this->type_array = array("begivenhed","rpg_element","kampagne");
			}
			elseif($type_spec == "session") {
				$this->type_array = array("begivenhed","rpg_element","session");				
			}
			else {  
				$this->type_array = array("begivenhed");
			}
		}
		elseif($type == "sted") {
			$this->type_array = array("sted");			
		}
		
		//$this->type_array = array("1","2");
	}



	function unslet_relation($id_under, $id_over, $relations_type = "normal")
	{
		$query = $this->db->query
		('
			UPDATE relation
			SET slettet = 0
			WHERE under_id = '.$id_under.'
			AND over_id = '.$id_over.'
			AND type = "'.$relations_type.'"
		');	
	}

	function slet_relation($id_under, $id_over, $relations_type = "normal")
	{
		$query = $this->db->query
		('
			UPDATE relation
			SET slettet = 1
			WHERE under_id = '.$id_under.'
			AND over_id = '.$id_over.'
			AND type = "'.$relations_type.'"
		');	
	}

	public function find_relation($id_under, $id_over, $relations_type = "none"){ 
		//tjekker om der findes en relation - evt. af en særlig type.

		$relation = array();

		if($relations_type != "none"){
			$query = $this->db->query('
				SELECT *
				FROM relation
				WHERE over_id = '.$id_over.'
				AND under_id = '.$id_under.'
				AND type = "'.$relations_type.'"
			');
		}else{
			$query = $this->db->query('
				SELECT *
				FROM relation
				WHERE over_id = '.$id_over.'
				AND under_id = '.$id_under.'
			');
	
		}

		foreach($query->result() as $row){
			$relation[] = array(
				'id' => $row->id,
				'start' => $row->start,
				'slut' => $row->slut,
				'slettet' => $row->slettet,
				'created' => $row->created,
				'updated' => $row->updated,
				'id_over' => $row->over_id,
				'id_under' => $row->under_id,
				'type' => $row->type,
				'hemmelig' => $row->hemmelig 
			);
		}

		$this->relation = $relation;
	}


	public function ny_relation($id_under, $id_over, $relations_type = "normal")
	{
	
		$data = array
		(
			'over_id' => $id_over,
			'under_id' => $id_under,
			'type' => $relations_type,
			'slettet' => 0
		);
	
		$this->db->insert('relation', $data);	
	}

	public function find_alle_af_type($type){
		
		$query = $this->db->query('
			SELECT '.$type.'.id, navn
			FROM '.$type.', navn
			WHERE '.$type.'.id = navn.id_element
			ORDER BY navn
		');
		
		foreach($query->result() as $row){
			$array_ider[] = $row->id;
			$array[] = array(
				'id' => $row->id,
				'navn' => $row->navn
			);
		}

		$this->alle_af_type = $array;
		$this->alle_af_type_ider = $array_ider; 
	}

	public function find_synlig_for($id_element){
		$query = $this->db->query('
			SELECT deling_element.id_entitet, navn.navn, entitet.type_kvant
			FROM deling_element, navn, entitet
			WHERE deling_element.id_element = '.$id_element.'
			AND navn.id_element = deling_element.id_entitet
			AND entitet.id = navn.id_element
		');

		foreach($query->result() as $row){

			$this->synlig_for[] = array(
				'id' => $row->id_entitet,
				'navn' => $row->navn,
				'type_kvant' => $row->type_kvant
			);
			$this->synlig_for_ider[] = $row->id_entitet;
		}


	}

	public function slet_synlig_for($id_element, $id_entitet){
		$query = $this->db->query('
			DELETE FROM deling_element
			WHERE id_element = '.$id_element.'
			AND id_entitet = '.$id_entitet.'
		');
	}

	public function tilfoej_synlig_for($id_element, $id_entitet){
		$data = array(
			'id_element' => $id_element,
			'id_entitet' => $id_entitet
		);
		$this->db->insert('deling_element', $data);
	}

	public function ret_hemmelig($element_id, $hemmelig){
		$query = $this->db->query('
			UPDATE element
			SET hemmelig = '.$hemmelig.'
			WHERE id = '.$element_id.'
		');
	}

	public function find_forfatter($element_id){
		$query = $this->db->query('
			SELECT deltager.rollespiller_navn, deltager.rollespiller_efternavn, deltager.id, username
			FROM deltager, element
			WHERE element.id = '.$element_id.'
			AND element.forfatter = deltager.id
		');

		$row = $query->row();


		$this->forfatter = array(
			'fornavn' => $row->rollespiller_navn,
			'efternavn' => $row->rollespiller_efternavn,
			'id' => $row->id,
			'username' => $row->username
		);
		
		
	}

	public function find_gm($element_id){
		$query = $this->db->query('
			SELECT deltager.rollespiller_navn, deltager.rollespiller_efternavn, deltager.id, username
			FROM deltager, element, rpg_element
			WHERE element.id = '.$element_id.'
			AND element.kampagne = rpg_element.id
			AND rpg_element.gamemaster_id = deltager.id
		');

		$row = $query->row();

		$this->gm = array(
			'fornavn' => $row->rollespiller_navn,
			'efternavn' => $row->rollespiller_efternavn,
			'id' => $row->id,
			'username' => $row->username
		);
	}


	public function oeverst($type)
	{
		$query = $this->db->query(
			'SELECT element.id, navn.navn
			FROM element, navn
			WHERE element.type = "'.$type.'"
			AND element.slettet = 0
			AND element.id = navn.id_element
			AND element.id NOT IN(
			SELECT under_id
			FROM relation
			WHERE slettet = 0
			)'
		);
		foreach($query->result() as $r)
		{
			$this->oeverst[] = array(
				'id' => $r->id,
				'navn' => $r->navn
			);
			$this->oeverst_ider[] = $r->id;
		}
	}


	public function find_alle_under($skal_checkes, $under = array())
	{
		$ny_skal_checkes = array();

		foreach($skal_checkes as $r)
		{
			$r = (int) $r;
			$under_r = $this->find_een_under($r);
			foreach($under_r as $s)
			{
				if(!in_array($s, $under)) //tjekker om vi er stødt på dette id før.
				{
					$under[] = $s;
					$ny_skal_checkes[] = $s;
				}
				
			}
		}	
		if(!empty($ny_skal_checkes))
		{
			$this->find_alle_under($ny_skal_checkes, $under);
		}
		else
		{
			$alle_under = array();
			$this->load->model('translation/tid_model');

			//print_r($under);

			foreach($under as $t)
			{
				$query = $this->db->query
				('
					SELECT navn, birth, death, element.id, element.type
					FROM navn, element
					WHERE element.id = '.$t.'
					AND navn.id_element = element.id
					AND element.slettet = 0 
				');
				
				$row = $query->row();
				
				if(isset($row->id))
				{
					$alle_under[] = array( 
						'id' => $row->id, 
						'type' => $row->type,
						'navn' => $row->navn, 
						'birth' => $row->birth,
						'birth_navn' => $this->tid_model->tid_navn($row->birth),
						'birth_dato' => $this->tid_model->tid_dato($row->birth),
						'death' => $row->death,
						'death_navn' => $this->tid_model->tid_navn($row->death),
						'death_dato' => $this->tid_model->tid_dato($row->death),
						'tid_interval' => $this->tid_model->tid_interval($row->birth, $row->death)	
					);
				}
			}
			$this->load->model('phpfunktioner/sorterings_model');			
			$alle_under = $this->sorterings_model->array_sort($alle_under, 'birth', SORT_DESC);

			$this->alle_under = $alle_under;
		}	
	}


	public function find_een_under($id) //Returnerer bare id'er på det der ligger under. Bruges kun af find_alle_under.
	{
		$under = array();
		$query = $this->db->query
		('
			SELECT under_id
			FROM relation, element
			WHERE over_id = '.$id.'
			AND relation.type = "normal"
			AND under_id = element.id
			AND relation.slettet = 0 
			AND element.slettet = 0 
			ORDER BY birth DESC
		');

		$this->load->model('translation/tid_model');

		foreach($query->result() as $row)
		{
			$under[] = $row->under_id;
		}
		return $under;
	}


	public function find_alle_over($skal_checkes, $individ = TRUE, $over = array(), $foerste = TRUE) //$individ angiver om funktionen bliver kaldt med et individ -> altså om $skal_checkes kun indeholder eet id - id'et på individet.
	{

		//echo "KALDER IGEN<br><br>";
		if($foerste == TRUE)
		{
			$alle_over = array();
			$this->alle_over = array();
			if($individ == TRUE){
				$skal_checkes = $this->find_een_over($skal_checkes[0]);
				$over = $skal_checkes;
			}
			//print_r($skal_checkes);
			
		}
			//echo "skal_checkes er "; print_r($skal_checkes); echo br(1);
			//echo "over er "; print_r($over); echo br(2);

			
		$ny_skal_checkes = array();

		foreach($skal_checkes as $r)
		{
				//echo "r er ".$r."<br>";
			$r = (int) $r;
			$over_r = $this->find_een_over($r);
				//echo "over_r er "; print_r($over_r); echo br();
				//echo "over_r har ".count($over_r)." elementer"; echo br();
			if(count($over_r) == 1)
			{
				if(!in_array($over_r[0], $over))
				{
					$over[] = $over_r[0];
					
					
						//echo "over er "; print_r($over); echo br();

					if(!in_array($over_r[0],$ny_skal_checkes))
					{
						$ny_skal_checkes[] = $over_r[0];
							//echo "ny_skal_checkes er "; print_r($ny_skal_checkes); echo br(2);
					}

				}

			}
				//echo br();
			
		}
	
		if(!empty($ny_skal_checkes))
		{
			$this->find_alle_over($ny_skal_checkes, FALSE, $over, FALSE);
		}
		else
		{
			$this->load->model('translation/tid_model');
			$this->alle_over_ider = $over;

			foreach($over as $t)
			{
				$query = $this->db->query
				('
					SELECT navn, birth, death, element.id
					FROM navn, element
					WHERE element.id = '.$t.'
					AND navn.id_element = element.id
					AND element.slettet = 0 
				');
				
				$row = $query->row();
				
				if(isset($row->id))
				{
					$alle_over[] = array( 
						'id' => $row->id, 
						'navn' => $row->navn, 
						'birth' => $row->birth,
						'birth_navn' => $this->tid_model->tid_navn($row->birth),
						'birth_dato' => $this->tid_model->tid_dato($row->birth),
						'death' => $row->death,
						'death_navn' => $this->tid_model->tid_navn($row->death),
						'death_dato' => $this->tid_model->tid_dato($row->death),
						'tid_interval' => $this->tid_model->tid_interval($row->birth, $row->death)	
					);
				}
					//echo "<br>alle_over er "; print_r($alle_over); echo br();
			} 
			$this->load->model('phpfunktioner/sorterings_model');			
			$alle_over = $this->sorterings_model->array_sort($alle_over, 'birth', SORT_DESC);
				//echo "<br>alle over er"; print_r($alle_over);
			$this->alle_over = $alle_over; 
		}	
	}


	public function find_een_over($id) //Returnerer bare id'er på det der ligger over. Bruges kun af find_alle_over.
	{
		$over = array();
		$query = $this->db->query
		('
			SELECT over_id
			FROM relation, element
			WHERE under_id = '.$id.'
			AND relation.type = "normal"
			AND over_id = element.id
			AND relation.slettet = 0 
			AND element.slettet = 0 
			ORDER BY birth DESC
		');

		$this->load->model('translation/tid_model');

		foreach($query->result() as $row)
		{
			$over[] = $row->over_id;
		}
		return $over;
	}


	public function find_under($id)
	{

		$this->under = array();
		$this->under_ider = array();

		$query = $this->db->query
		('
			SELECT under_id, navn, element.birth, element.death, element.type
			FROM navn, relation, element 
			WHERE over_id = '.$id.'
			AND relation.type = "normal"
			AND under_id = element.id
			AND relation.slettet = 0 
			AND element.slettet = 0 
			AND under_id = id_element
			ORDER BY birth DESC
		');

		$this->load->model('translation/tid_model');
		$this->load->model('element/type_spec_model');
		$element = new type_spec_model();

		foreach($query->result() as $row)
		{
		
			$element->specificer_type($row->under_id,$row->type);

			$indsaet = array(
				'under_id' => $row->under_id,
				'type' => $row->type,
				'type_spec' => $element->type_spec,				
				'navn' => $row->navn,
				'birth' => $row->birth,
				'birth_navn' => $this->tid_model->tid_navn($row->birth),
				'birth_dato' => $this->tid_model->tid_dato($row->birth),
				'death' => $row->death,
				'death_navn' => $this->tid_model->tid_navn($row->death),
				'death_dato' => $this->tid_model->tid_dato($row->death),
				'tid_interval' => $this->tid_model->tid_interval($row->birth, $row->death)
				);
			$this->under[] = $indsaet;
			$this->under_ider[] = $row->under_id;
			$lokal_under[] = $indsaet;
		}
	}


	public function find_over($id)
	{
		$query = $this->db->query
		('
			SELECT over_id, navn, element.birth, element.death, element.type
			FROM navn, relation, element 
			WHERE under_id = '.$id.'
			AND relation.type = "normal"
			AND over_id = element.id
			AND relation.slettet = 0 
			AND element.slettet = 0 
			AND over_id = id_element
			ORDER BY birth DESC
		');

		$this->load->model('translation/tid_model');
		$this->load->model('core/entitet');



		foreach($query->result() as $row)
		{

			if($row->type == "entitet") {
			    $element = new entitet();
				$element->find_type_kvant($row->over_id);			
				$type = $element->type_kvant;
			}
			else { $type = $row->type; }
			
			$this->over[] = array(
				'over_id' => $row->over_id,
				'navn' => $row->navn,
				'type' => $type,
				'birth' => $row->birth,
				'birth_navn' => $this->tid_model->tid_navn($row->birth),
				'birth_dato' => $this->tid_model->tid_dato($row->birth),
				'death' => $row->death,
				'death_navn' => $this->tid_model->tid_navn($row->death),
				'death_dato' => $this->tid_model->tid_dato($row->death),
				'tid_interval' => $this->tid_model->tid_interval($row->birth, $row->death)	
				);
		}
	}
		

	public function check_id_type_match($id, $type)
	{

		$query = $this->db->query("
			SELECT * 
			FROM ".$type."
			WHERE id = ".$id);

		if($query->num_rows() == 0){$this->id_type_match = "nej" ;}
		else{$this->id_type_match = "ja" ;}
	}


	public function find_beskrivelser($id) //$id = id på det element der skal hentes beskrivelser for.
	{
		
		// HENTER MODELLER
		$this->load->model('tid_model');
		$this->load->model('indhold/beskrivelse_model');

		// HENTER SESSION-OPLYSNINGER : INGAME
		$ingame = $this->session->userdata('ingame');

		// Tømmer først beskrivelser-arrayet
		$this->beskrivelser = array();

		// *1) HENTER BASIS-OPLYSNINGER OM BESKRIVELSEN : ID, OVERSKRIFT, TEKST, CREATED, UPDATED, HEMMELIG, INGAME_TID...
		$query = $this->db->query('
			SELECT element_beskrivelse.id_beskrivelse, beskrivelse.overskrift, beskrivelse.tekst, beskrivelse.created, beskrivelse.updated, beskrivelse.hemmelig, beskrivelse.ingame_tid, beskrivelse.ingame_klokken, beskrivelse.id_deltager, beskrivelse.type_game, deltager.rollespiller_navn, deltager.rollespiller_efternavn
			FROM element_beskrivelse, beskrivelse, deltager
			WHERE element_beskrivelse.id_element = '.$id.'
			AND element_beskrivelse.id_beskrivelse =beskrivelse.id
			AND deltager.id = beskrivelse.id_deltager
			AND beskrivelse.slettet = 0
			ORDER BY ingame_tid DESC
		');

		// LOOP OVER ALLE BESKRIVELSER
		foreach($query->result() as $row)
		{	
			// danner et ARRAY, der skal indeholde informationen om den specifikke beskrivelse
			$beskrivelse = array();

			// hælder basisoplysninger *1) i beskrivelsesarray
			$beskrivelse['id'] = $row->id_beskrivelse; 
			$beskrivelse['overskrift'] = $row->overskrift;
			$beskrivelse['tekst'] = $row->tekst;
			$beskrivelse['tekst_simpel_html'] = $this->beskrivelse_model->simpel_html($row->tekst);
			$beskrivelse['created'] = $row->created;
			$beskrivelse['updated'] = $row->updated;
			$beskrivelse['hemmelig'] = $row->hemmelig;
			$beskrivelse['id_deltager'] = $row->id_deltager;
			$beskrivelse['navn_deltager'] = $row->rollespiller_navn;
			$beskrivelse['efternavn_deltager'] = $row->rollespiller_efternavn;
			$beskrivelse['type_game'] = $row->type_game;
			$beskrivelse['ingame_tid_db'] = $row->ingame_tid; // bemærk, at selvom beskrivelsen er off-game, kan den godt have en ingame-tid (det er frivilligt om man vil have en ingame-tid på off-gamebeskrivelser
			$beskrivelse['ingame_tid_navn'] = $this->tid_model->tid_navn($row->ingame_tid);
			$beskrivelse['ingame_tid_alder'] = $this->tid_model->alder($row->ingame_tid,$ingame['ingame_nu']);
			$beskrivelse['ingame_klokken'] = $row->ingame_klokken;

			// henter KAMPAGNE-oplysninger for den givne beskrivelse
			$kampagner = array();
			$gms = array();

			$query3 = $this->db->query('
				SELECT navn, id_kampagne, beskrivelse_kampagne.id_beskrivelse, id_gm, deltager.rollespiller_navn, deltager.rollespiller_efternavn
				FROM navn, beskrivelse_kampagne, rpg_element_gm, deltager
				WHERE navn.id_element = beskrivelse_kampagne.id_kampagne
				AND beskrivelse_kampagne.id_kampagne = rpg_element_gm.id_rpg_element
				AND beskrivelse_kampagne.id_beskrivelse = '.$row->id_beskrivelse.'
				AND id_gm = deltager.id
				ORDER BY id_kampagne ASC
			');

			// Hælder kampagneoplysninger i beskrivelsesarrayet
			$hentede_kampagne_ider = array();
			if($query3){
				foreach($query3->result() as $row3){
					if(!in_array($row3->id_kampagne,$hentede_kampagne_ider)){
						$kampagner[] = array(
							"id" => $row3->id_kampagne,
							"navn" => $row3->navn
						);	
						$hentede_kampagne_ider[] = $row3->id_kampagne;
					}
					$gms[$row3->id_kampagne][] = array(
						"id" => $row3->id_gm,
						"navn" => $row3->rollespiller_navn." ".$row3->rollespiller_efternavn
					);
				}
			}
			
			$beskrivelse['kampagner'] = $kampagner;
			$beskrivelse['gms'] = $gms;

			// Henter DELT-MED-oplysninger for den givne beskrivelse
			$delt_med = array();

			if($row->hemmelig == "3"){
				$query4 = $this->db->query("
					SELECT navn, id_entitet
					FROM deling_beskrivelse, navn
					WHERE navn.id_element = deling_beskrivelse.id_entitet
					AND deling_beskrivelse.id_beskrivelse = ".$row->id_beskrivelse."
				");
			
				// hælder delt_med-oplysninger i beskrivelsesarrayet
				foreach($query4->result() as $row4){
					$delt_med[] = array(
						"id_entitet" => $row4->id_entitet,
						"navn_entitet" => $row4->navn
					);
				}
			}


			$beskrivelse['delt_med'] = $delt_med;


			// henter IN/OFF_GAME-oplysninger om givne beskrivelse
			if($row->type_game == "in_game")
			{
				$query2 = $this->db->query('
					SELECT ingame_beskrivelse.forfatter, navn.navn
					FROM ingame_beskrivelse, navn
					WHERE ingame_beskrivelse.id = '.$row->id_beskrivelse.'
					AND ingame_beskrivelse.forfatter = navn.id_element
				');
				$row2 = $query2->row();

				// Hælder in/off_game oplysninger i beskrivesesarrayet
				$beskrivelse['id_forfatter'] = $row2->forfatter;
				$beskrivelse['navn_forfatter'] = $row2->navn;
				

			} // Der er ikke noget "else": Der er ikke nogen information, som findes om off-gamebeskrivelser, der ikke også er relevant for ingame beskrivelser.

		// Skriver til beskrivelses-arrayet
		$this->beskrivelser[] = $beskrivelse;


		} // Her slutter loop over de enkelte beskrivelser.

			
	
	}

	public function find_navne($id)
	{
		$query = $this->db->query
		('
    		SELECT navn 
		 	FROM navn 
			WHERE id_element='.$id.'
		');
		
		foreach($query->result() as $row)
		{
			$this->navne[] = $row->navn;
		}
	}


	public function find_stamdata($id) //indeholder de informationer, som alle elementer har
	{
		$this->load->model('translation/tid_model');
		
		$query = $this->db->query
		('
    		SELECT birth, death, hemmelig, forfatter, approved, type, type_spec, deltager.rollespiller_navn, deltager.rollespiller_efternavn
		 	FROM element, deltager 
			WHERE element.id='.$id.'
			AND deltager.id = element.forfatter
		');
		$row = $query->row();
		
		//henter de KAMPAGNER som elementet knytter sig til
		$query_kampagne = $this->db->query
		('
			SELECT navn.navn, element_kampagne.id_kampagne
			FROM navn, element_kampagne
			WHERE element_kampagne.id_element = '.$id.'
			AND navn.id_element = element_kampagne.id_kampagne
		');

		$kampagner = array();
		foreach($query_kampagne->result() as $row_kampagne){
			
			//henter de GM's som knytter sig til kampagnen
			$query_gm = $this->db->query('
				SELECT deltager.id, rollespiller_navn, rollespiller_efternavn
				FROM deltager, rpg_element_gm
				WHERE id_rpg_element = '.$row_kampagne->id_kampagne.'
				AND id_gm = deltager.id
			');
			$gms = array();
			foreach($query_gm->result() as $row_gm){
				$gms[] = array(
					'id' => $row_gm->id,
					'navn' => $row_gm->rollespiller_navn." ".$row_gm->rollespiller_efternavn
				);
			}
			
			$kampagner[] = array(
				'id' => $row_kampagne->id_kampagne,
				'navn' => $row_kampagne->navn,
				'gms' => $gms
			);
		}

		//henter elementets ADMINISTRATORER
		$admins = $this->find_admins($id);
		

		$this->stamdata = array
		(
			'id' => $id,
			'type' => $row->type,
			'type_spec' => $row->type_spec,
			'birth_navn' => $this->tid_model->tid_navn($row->birth),
			'birth' => $row->birth, 
			'death_navn' => $this->tid_model->tid_navn($row->death),
			'death' => $row->death,
			'hemmelig' => $row->hemmelig,
			'forfatter' => $row->forfatter,
			'forfatter_navn' => $row->rollespiller_navn,
			'forfatter_efternavn' => $row->rollespiller_efternavn,
			'approved' => $row->approved,
			'kampagner' => $kampagner,
			'admins' => $admins
		);
	}

	public function set_birth($id,$dato){
		$query = $this->db->query('
			UPDATE element
			SET birth = '.$dato.'
			WHERE id = '.$id.'
		');
	}
	
	public function set_death($id,$dato){
		$query = $this->db->query('
			UPDATE element
			SET death = '.$dato.'
			WHERE id = '.$id.'
		');
	}


	public function afgoer_rettighed($id_element){

		$deltager = $this->session->userdata('deltager');
		$ingame = $this->session->userdata('ingame');

			//echo "ingame er"; print_r($ingame);
				
		$query = $this->db->query('
    		SELECT hemmelig, forfatter, kampagne, slettet 
		 	FROM element 
			WHERE id='.$id_element.'
		');

		$row = $query->row();

	//tilfældet elementet er slettet.		 
		if($row->slettet != 0)  { redirect("core/vis/slettet/".$id_element);}

		//tilfældet: du er side-admin
		if($ingame['ingame_id'] == -1){
			$this->maa_jeg_se = "ja";
			$this->er_jeg_admin = "ja";
			return;
		}

		//tilfældet: elementet er element under den kampagne du er logget ind på
		if($row->kampagne == $ingame['kampagne_id']){
		
			//tilfældet: du er gm
			if($ingame['ingame_id'] == 0){
				$this->maa_jeg_se = "ja";
				$this->er_jeg_admin = "ja";
				return;
			}

			//tilfældet: det er din pc
			$this->load->model('rettighed/rollespiller');
			$r = new rollespiller();
			$r->find_pcer($deltager['userid']);
			$pcer_ider = $r->pcer_ider;
				//echo "<br>pcer_ider er "; print_r($pcer_ider);
			if(in_array($id_element,$pcer_ider)){
				$this->maa_jeg_se = "ja";
				$this->er_jeg_admin = "ja";
				return;	
			}

			//tilfældet: du er forfatter
			if($deltager['userid'] == $row->forfatter){
				$this->maa_jeg_se = "ja";
				$this->er_jeg_admin = "ja";
				return;	
			}


			//tilfældet: du er admin
			$query_admin = $this->db->query('
				SELECT *
				FROM admin_element
				WHERE id_element = '.$id_element.'
				AND id_deltager = '.$deltager['userid'].'
			');

			if($query_admin->num_rows() > 0){
				$this->maa_jeg_se = "ja";
				$this->er_jeg_admin = "ja";
				return;
			}

		}

		$this->er_jeg_admin = "nej";
			//... nu er der kun tilbage at afgøre om man må se...

		//tilfældet: offentligt element
		if($row->hemmelig == 1){
			$this->maa_jeg_se = "ja";
			return;
		}
		
		//tilfældet: hemmelig
		if($row->hemmelig == 3){

			//MEN: den er delt med mig (PERSONLIGT)
			$query_delt_pers = $this->db->query('
				SELECT *
				FROM deling_element
				WHERE id_element = '.$id_element.'
				AND id_entitet = '.$ingame['ingame_id'].'
			');

			if($query_delt_pers->num_rows() > 0){
				$this->maa_jeg_se = "ja";
				return;
			}

			//MEN: den er delt med mig (GENNEM EN GRUPPE JEG ER MEDLEM AF)
			
			$overgrupper = $this->session->userdata('overgrupper');
			$this->load->model('translation/array_model');
			$overgrupper = $this->array_model->ider_php_til_mysql($overgrupper);

			$query_delt_grup = $this->db->query('
				SELECT *
				FROM deling_element
				WHERE id_element = '.$id_element.'
				AND id_entitet IN '.$overgrupper.'
			');

			if($query_delt_grup->num_rows() > 0){
				$this->maa_jeg_se = "ja";
				return;
			}

		}

		$this->maa_jeg_se = "nej";
	}

			
	function opret_element_kampagne_relation($id_element,$id_kampagne) {
		
	$data = array(
				'id_element' => $id_element,
				'id_kampagne' => $id_kampagne,
			);	
			$this->db->insert('element_kampagne', $data);	
			return;
	}




}



?>
